CREATE TABLE XPROJECT
(XPROJECT_ID BIGINT NOT NULL,
TIME INTEGER ,
DIFFICULTY INTEGER ,
PRJNAME VARCHAR(64) NOT NULL,
STOREENT_ID INTEGER NOT NULL,
OPTCOUNTER SMALLINT,
CONSTRAINT P_XPROJECT PRIMARY KEY (XPROJECT_ID),
CONSTRAINT F_XPROJECT FOREIGN KEY (STOREENT_ID) REFERENCES STOREENT(STOREENT_ID) ON DELETE CASCADE,
CONSTRAINT I_XPROJECT UNIQUE (PRJNAME)
);

CREATE TABLE XPRJDES (
XPROJECT_ID BIGINT NOT NULL,
LANGUAGE_ID INTEGER NOT NULL,
SHORTDESC VARCHAR(254),
LONGDESC VARCHAR(1024),
OPTCOUNTER SMALLINT,
CONSTRAINT P_XPRJDES PRIMARY KEY (XPROJECT_ID,LANGUAGE_ID),
CONSTRAINT F_XPRJDES1 FOREIGN KEY (XPROJECT_ID) REFERENCES XPROJECT(XPROJECT_ID) ON DELETE CASCADE,
CONSTRAINT F_XPRJDES2 FOREIGN KEY (LANGUAGE_ID) REFERENCES  LANGUAGE(LANGUAGE_ID) ON DELETE CASCADE
);

CREATE TABLE XPRJMTR (
XPRJMTR_ID BIGINT NOT NULL,
XPROJECT_ID BIGINT NOT NULL,
PRJMTRNAME VARCHAR(64) NOT NULL,
AMOUNT DOUBLE,
QTYUNIT_ID CHAR(16),
OPTCOUNTER SMALLINT,
CONSTRAINT P_XPRJMTR PRIMARY KEY (XPRJMTR_ID),
CONSTRAINT F_XPRJMTR1 FOREIGN KEY (XPROJECT_ID) REFERENCES XPROJECT(XPROJECT_ID) ON DELETE CASCADE
);

CREATE TABLE XPRJMTRDES (
XPRJMTR_ID BIGINT NOT NULL,
LANGUAGE_ID INTEGER NOT NULL,
SHORTDESC VARCHAR(254),
OPTCOUNTER SMALLINT,
CONSTRAINT P_XPRJMTRDES PRIMARY KEY (XPRJMTR_ID,LANGUAGE_ID),
CONSTRAINT F_XPRJMTRDES1 FOREIGN KEY (XPRJMTR_ID) REFERENCES XPRJMTR(XPRJMTR_ID) ON DELETE CASCADE,
CONSTRAINT F_XPRJMTRDES2 FOREIGN KEY (LANGUAGE_ID) REFERENCES  LANGUAGE(LANGUAGE_ID) ON DELETE CASCADE
);

CREATE TABLE XPRJMTRCATREL (
XPRJMTR_ID BIGINT NOT NULL,
CATENTRY_ID BIGINT NOT NULL,
STOREENT_ID INTEGER NOT NULL,
OPTCOUNTER SMALLINT,
CONSTRAINT P_XPRJMTRCATREL PRIMARY KEY (XPRJMTR_ID,STOREENT_ID ),
CONSTRAINT F_XPRJMTRCATREL1 FOREIGN KEY (XPRJMTR_ID) REFERENCES XPRJMTR(XPRJMTR_ID) ON DELETE CASCADE,
CONSTRAINT F_XPRJMTRCATREL2 FOREIGN KEY (CATENTRY_ID) REFERENCES CATENTRY(CATENTRY_ID) ON DELETE CASCADE,
CONSTRAINT F_XPRJMTRCATREL3 FOREIGN KEY (STOREENT_ID) REFERENCES STOREENT(STOREENT_ID) ON DELETE CASCADE
);

CREATE TABLE XPRJINS(
XPRJINS_ID BIGINT NOT NULL,
XPROJECT_ID BIGINT NOT NULL,
SEQ INTEGER,
ISOPTIONAL INTEGER,
OPTCOUNTER SMALLINT,
CONSTRAINT P_XPRJINS PRIMARY KEY (XPRJINS_ID),
CONSTRAINT F_XPRJINS FOREIGN KEY (XPROJECT_ID) REFERENCES XPROJECT(XPROJECT_ID) ON DELETE CASCADE
);

CREATE TABLE XPRJINSDES (
XPRJINS_ID BIGINT NOT NULL,
LANGUAGE_ID INTEGER NOT NULL,
SHORTDESC VARCHAR(1024),
OPTCOUNTER SMALLINT,
CONSTRAINT P_XPRJINSDES PRIMARY KEY (XPRJINS_ID,LANGUAGE_ID),
CONSTRAINT F_XPRJINSDES1 FOREIGN KEY (XPRJINS_ID) REFERENCES XPRJINS(XPRJINS_ID) ON DELETE CASCADE,
CONSTRAINT F_XPRJINSDES2 FOREIGN KEY (LANGUAGE_ID) REFERENCES  LANGUAGE(LANGUAGE_ID) ON DELETE CASCADE
);

CREATE TABLE XPRJCATREL (
XPROJECT_ID BIGINT NOT NULL,
CATENTRY_ID BIGINT NOT NULL,
STOREENT_ID INTEGER NOT NULL,
OPTCOUNTER SMALLINT,
CONSTRAINT P_XPRJCATREL PRIMARY KEY (XPROJECT_ID,CATENTRY_ID ),
CONSTRAINT F_XPRJCATREL1 FOREIGN KEY (XPROJECT_ID) REFERENCES XPROJECT(XPROJECT_ID) ON DELETE CASCADE,
CONSTRAINT F_XPRJCATREL2 FOREIGN KEY (CATENTRY_ID) REFERENCES CATENTRY(CATENTRY_ID) ON DELETE CASCADE,
CONSTRAINT F_XPRJCATREL3 FOREIGN KEY (STOREENT_ID) REFERENCES STOREENT(STOREENT_ID) ON DELETE CASCADE
);

CREATE TABLE XPRJCOL
(XPRJCOL_ID BIGINT NOT NULL,
PRJCOLNAME VARCHAR(64) NOT NULL,
STOREENT_ID INTEGER NOT NULL,
OPTCOUNTER SMALLINT,
CONSTRAINT P_XPRJCOL PRIMARY KEY (XPRJCOL_ID),
CONSTRAINT F_XPRJCOL FOREIGN KEY (STOREENT_ID) REFERENCES STOREENT(STOREENT_ID) ON DELETE CASCADE,
CONSTRAINT I_XPRJCOL UNIQUE (PRJCOLNAME)
);

CREATE TABLE XPRJCOLDES (
XPRJCOL_ID BIGINT NOT NULL,
LANGUAGE_ID INTEGER NOT NULL,
SHORTDESC VARCHAR(254),
OPTCOUNTER SMALLINT,
CONSTRAINT P_XPRJCOLDES PRIMARY KEY (XPRJCOL_ID,LANGUAGE_ID),
CONSTRAINT F_XPRJCOLDES1 FOREIGN KEY (XPRJCOL_ID) REFERENCES XPRJCOL(XPRJCOL_ID) ON DELETE CASCADE,
CONSTRAINT F_XPRJCOLDES2 FOREIGN KEY (LANGUAGE_ID) REFERENCES  LANGUAGE(LANGUAGE_ID) ON DELETE CASCADE
);

CREATE TABLE XPRJPRJCOLREL (
XPROJECT_ID BIGINT NOT NULL,
XPRJCOL_ID BIGINT NOT NULL,
STOREENT_ID INTEGER NOT NULL,
OPTCOUNTER SMALLINT,
CONSTRAINT P_XPRJPRJCOLREL PRIMARY KEY (XPROJECT_ID,XPRJCOL_ID ),
CONSTRAINT F_XPRJPRJCOLREL1 FOREIGN KEY (XPROJECT_ID) REFERENCES XPROJECT(XPROJECT_ID) ON DELETE CASCADE,
CONSTRAINT F_XPRJPRJCOLREL2 FOREIGN KEY (XPRJCOL_ID) REFERENCES XPRJCOL(XPRJCOL_ID) ON DELETE CASCADE,
CONSTRAINT F_XPRJPRJCOLREL3 FOREIGN KEY (STOREENT_ID) REFERENCES STOREENT(STOREENT_ID) ON DELETE CASCADE
);